其他
1,倒叙打印链表
比如一个链表是:1→2→3→4→5
我们打印的结果是:[5,4,3,2,1]
如果是双向链表的话,我们直接从后往前输入就行了。我们这里说的不是双向链表,而是单向链表。如果是单向链表的话,我们有4种方式
第一种是先把链表反转,然后再顺序输出。
第二种是先把链表输出然后再把输出的结果反转
第三种方式是先把链表输入到一个栈中,然后再一个个出栈
第四种是使用递归的方式
前两种方式就不在写了,这里主要来看一下第三种和第四种方式
第三种方式
先把链表节点压入栈中的过程
再看一下链表出栈的过程
原理比较简单,我们来看下代码部分
public void printRevers(ListNode root) {
Stack<Integer> stack = new Stack<>();
//先压栈
while (root != null) {
stack.add(root.val);
root = root.next;
}
//在出栈
while (!stack.isEmpty()) {
System.out.println(stack.pop());
}
}
第四种方式
第四种方式是使用递归的方法,因为递归分为递和归两部分,传递的时候我们让他一直往后找,找到链表的结尾我们才开始打印,因为递归的时候往后传递完了会往前回溯,在往前回溯的时候我们再打印节点。这样就相当于从链表的尾部到头部开始打印。我们来看下代码
public void printRevers(ListNode root) {
if (root == null)
return;
printRevers(root.next);
System.out.println(root.val);
}